package devtype

import (
	"yundian/internel/app/models/devploys"
	"yundian/internel/app/models/devrule"
	"yundian/internel/pkg/dingo"
)

// DeviceType 设备类型
type DeviceTypeModel struct {
	Id            int        `gorm:"column:id" json:"id"`                         // 设备ID
	DeviceName    string     `gorm:"column:device_name" json:"deviceName"`
	SharedMode    string     `gorm:"column:shared_mode" json:"sharedMode"`        // 共享模式   pcl 共享充电线
	// XC-PCL-5-001   骁匠5键密码线充
	// XC-PCL-5-002   天海5键单套餐密码线充
	// XJ-CDB-08A01   骁匠8口A01型共享充电宝
	DeviceModelId string     `gorm:"column:device_model_id" json:"deviceModelId"` // 设备型号
	NetworkType   string     `gorm:"column:network_type" json:"networkType"`      // 网络类型 1不联网 2 2G 3 4G 4 蓝牙 5 Wifi   1,2,3,4
	PwdDecodeType string     `gorm:"column:pwd_decode_type" json:"pwdDecodeType"` // 密码解锁类型
	SecretKey     string     `gorm:"column:secret_key" json:"secretKey"`          // 密码key
	SlotTotal     int        `gorm:"column:slot_total" json:"slotTotal"`
	IotNodeId     int        `gorm:"column:iot_node_id" json:"iotNodeId"`
	IotType       int        `gorm:"column:iot_type" json:"iotType"`
	FeeMode       int8       `gorm:"column:fee_mode" json:"feeMode"`              // 费用模式  1 预付费 2 普通

	Note          string     `gorm:"column:note" json:"note"`                     // 设备详情
	Status        int8       `gorm:"column:status" json:"status"`                 // 是否启用  1启用 2禁用
	CreateAt      dingo.Time `gorm:"column:create_at" json:"createAt"`
	UpdateAt      dingo.Time `gorm:"column:update_at" json:"updateAt"`

	//DrawScope     int8       `gorm:"column:draw_scope" json:"drawScope"`   //抽单范围
	//DrawNumber    int8       `gorm:"column:draw_number" json:"drawNumber"` //抽单的数量
	//DrawType      int8       `gorm:"column:draw_type" json:"drawType"`     //抽单方式  1:固定位置抽取 2:轮次随机抽取

	RuleInfo      []*devrule.DeviceRulesModel `gorm:"-" json:"ruleInfo"`
	DrawInfo      devploys.DevicePloysModel   `gorm:"-" json:"drawInfo"`
}

func New() *DeviceTypeModel {
	return &DeviceTypeModel{}
}

func (model *DeviceTypeModel) Mutate(attrs ...DeviceTypeAttr) *DeviceTypeModel {
	DeviceTypeAttrs(attrs).Apply(model)
	return model
}

func (model *DeviceTypeModel) GetTableName() string {
	return "device_type"
}
